Modern flash memory devices store information with high density on flash cells with ever smaller dimensions. Single Level Cells (SLC) store one bit per cell. Multi-Level Cells (MLC) store several bits per cell by setting the amount of charge in the cell.
Flash memory devices are organized into (physical) pages. Each page contains a section allocated for data (512 bytes-8 Kbytes) and a small amount of spare bytes (16-32 or more bytes for every 512 data bytes) containing redundancy and back pointers.
The redundancy bytes are used to store error correcting information, for correcting errors which may have occurred during the reading of the page content.
Each program operation is performed on an entire page. A number of pages are grouped together to form an erase block (also referred to as block). A page cannot be erased unless the entire block (which contains the page) is erased.
MLC devices suffer from read-disturb. Read disturb is an unintentional programming of cells caused due to read operation. The effect of read disturb is becoming a major limitation which must be treated.
Due to read disturbs, a memory controller is required to apply stronger Error Correction Coding (ECC) capabilities, or/and reduce the maximum endurance of the flash memory device or/and refresh blocks, namely, copy entire MLC blocks to other locations and erase the disturbed blocks. Re-writing an MLC block incurs performance degradation due the additional writes and reduces the endurance (increase the total program erase (P/E) cycle of the device).